package gui;

import interfaces.ProdutoInterface;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.Observable;
import java.util.Observer;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import exceptions.CreditoInsuficienteException;

public class AbaPagamento extends JPanel implements Observer {

	private static final long serialVersionUID = 1L;

	private JLabel labelTexto1;
	private JLabel labelSaldo;
	private JLabel labelTexto2;
	private JLabel labelTotalCompra;
	private JLabel labelTexto3;
	private JLabel labelSaldoFinal;
	private JButton buttonConcluir;
	private JButton buttonVoltar;

	private JPanel painelSaldo;
	private JPanel painelTotalCompra;
	private JPanel painelSaldoFinal;
	private JPanel painelBotoes;

	public AbaPagamento() {
		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		try {
			Principal.servidor.addObserver(this);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		labelTexto1 = new JLabel("Seu saldo atual: R$");
		labelSaldo = new JLabel();
		labelTexto2 = new JLabel("Valor da compra: R$");
		labelTotalCompra = new JLabel();
		labelTexto3 = new JLabel("Seu saldo final: R$");
		labelSaldoFinal = new JLabel();
		buttonConcluir = new JButton("Concluir");
		buttonConcluir.addActionListener(new Ouvinte());
		buttonVoltar = new JButton("Voltar..");
		buttonVoltar.addActionListener(new Ouvinte());

		painelSaldo = new JPanel();
		painelSaldo.add(labelTexto1);
		painelSaldo.add(labelSaldo);

		painelTotalCompra = new JPanel();
		painelTotalCompra.add(labelTexto2);
		painelTotalCompra.add(labelTotalCompra);

		painelSaldoFinal = new JPanel();
		painelSaldoFinal.add(labelTexto3);
		painelSaldoFinal.add(labelSaldoFinal);

		painelBotoes = new JPanel();
		painelBotoes.add(buttonConcluir);
		painelBotoes.add(buttonVoltar);

		this.add(painelSaldo);
		this.add(painelTotalCompra);
		this.add(painelSaldoFinal);
		this.add(painelBotoes);

	}

	class Ouvinte implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {

			if (arg0.getSource() == buttonConcluir) {
				Iterator<ProdutoInterface> it = Principal.itensCarrinho
						.keySet().iterator();
				double total = 0;
				while (it.hasNext()) {
					ProdutoInterface produto = it.next();
					total += produto.getValorVenda()
							* Principal.itensCarrinho.get(produto);
				}
				try {
					Principal.servidor.efetuarCompra(Principal.cliente,
							Principal.itensCarrinho, total);
					JOptionPane
							.showMessageDialog(Principal.janela,
									"Compra efetuada com sucesso! Voce recebera um email em instantes");
					Principal.tabManager.setEnabledAt("Pagamento", false);
					Principal.tabManager.setSelectedTab("Perfil");
				} catch (RemoteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (CreditoInsuficienteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				// Tratar o caso de naum ter credito suficiente
			} else { // aviso veio de buttonVoltar
				// some com a aba pagamento e exibe a aba carrinho
				Principal.tabManager.setEnabledAt("Pagamento", false);
				Principal.tabManager.setEnabledAt("Carrinho", true);
				Principal.tabManager.setSelectedTab("Carrinho");
			}
		}

	}

	@Override
	public void update(Observable arg0, Object arg1) {

	}

}
